package com.dszq.wemedia.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dszq.model.common.dtos.ResponseResult;
import com.dszq.model.wemedia.dtos.NewsAuthDto;
import com.dszq.model.wemedia.dtos.WmNewsDto;
import com.dszq.model.wemedia.dtos.WmNewsPageReqDto;
import com.dszq.model.wemedia.pojos.WmNews;

public interface WmNewsService extends IService<WmNews> {
    /**
     * 查询所有新闻信息
     *
     * @param wmNewsPageReqDto 包含新闻查询条件和分页信息的数据传输对象
     * @return 返回新闻信息的响应结果，包含新闻列表和分页信息
     */
    ResponseResult findAll(WmNewsPageReqDto wmNewsPageReqDto);


    /**
     * 提交新闻信息
     *
     * @param wmNewsDto 新闻数据传输对象，包含新闻的全部或部分信息
     * @return ResponseResult 返回操作结果，成功或失败，以及可能的错误信息
     */
    ResponseResult submitNews(WmNewsDto wmNewsDto);

    /**
     * 根据新闻ID获取一条新闻的详细信息。
     *
     * @param id 新闻的唯一标识符，从URL路径变量中获取。
     * @return 返回一个包含新闻详细信息的ResponseResult对象。
     */
    ResponseResult getOneNew(Integer id);
    /**
     * 根据新闻ID删除新闻
     *
     * @param id 新闻的唯一标识符
     * @return 返回操作结果，成功返回true，失败返回false
     */
    ResponseResult deleteNewById(Integer id);
    /**
     * 处理新闻的上下架操作。
     *
     * @param wmNewsDto 包含新闻相关信息的传输对象，用于指定需要进行上下架操作的新闻。
     * @return 返回一个响应结果，包含操作是否成功及其相关信息。
     */
    ResponseResult downOrUp(WmNewsDto wmNewsDto);
    /**
     * 通过POST请求查找文章信息。
     *
     * @param newsAuthDto 接收客户端传来的新闻授权信息数据传输对象，包含用于查询文章的条件。
     * @return 返回查询结果的响应体，封装了查询到的文章信息。
     */
    ResponseResult findArticles(NewsAuthDto newsAuthDto);
    /**
     * 根据新闻ID查询最新的新闻信息。
     *
     * @param id 新闻的唯一标识符。
     * @return 返回一个包含查询结果的ResponseResult对象。
     */
    ResponseResult findOneNew(Integer id);
    /**
     * 处理新闻认证的逻辑。
     *
     * @param newsAuthDto 包含新闻认证信息的数据传输对象，用于传递新闻的认证状态和其它必要信息。
     * @return 返回操作结果，包括操作是否成功、错误码等信息。
     */
    ResponseResult updateNews(NewsAuthDto newsAuthDto, Short status);
}
